home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / SLAX 6.0.8 / slax-6.0.8.iso / slax / base / 006-devel.lzm / usr / include / libwmf / macro.h < prev    next >
Encoding:
C/C++ Source or Header  |  2007-02-16  |  10.2 KB  |  408 lines

  1. /* libwmf (<libwmf/macro.h>): library for wmf conversion
  2.    Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources
  3.  
  4.    The libwmf Library is free software; you can redistribute it and/or
  5.    modify it under the terms of the GNU Library General Public License as
  6.    published by the Free Software Foundation; either version 2 of the
  7.    License, or (at your option) any later version.
  8.  
  9.    The libwmf Library is distributed in the hope that it will be useful,
  10.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  12.    Library General Public License for more details.
  13.  
  14.    You should have received a copy of the GNU Library General Public
  15.    License along with the libwmf Library; see the file COPYING.  If not,
  16.    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  17.    Boston, MA 02111-1307, USA.  */
  18.  
  19.  
  20. #ifndef LIBWMF_MACRO_H
  21. #define LIBWMF_MACRO_H
  22.  
  23. #include <math.h>
  24.  
  25. #include <libwmf/defs.h>
  26. #include <libwmf/types.h>
  27. #include <libwmf/ipa.h>
  28.  
  29. /**
  30.  * WMF_PEN_STYLE(wmfPen* P)  -> (U16) pen style
  31.  */
  32. #define WMF_PEN_STYLE(P)  ((P)->lopnStyle & PS_STYLE_MASK)
  33.  
  34. /**
  35.  * WMF_PEN_ENDCAP(wmfPen* P) -> (U16) endcap style
  36.  */
  37. #define WMF_PEN_ENDCAP(P) ((P)->lopnStyle & PS_ENDCAP_MASK)
  38.  
  39. /**
  40.  * WMF_PEN_JOIN(wmfPen* P)   -> (U16) join style
  41.  */
  42. #define WMF_PEN_JOIN(P)   ((P)->lopnStyle & PS_JOIN_MASK)
  43.  
  44. /**
  45.  * WMF_PEN_TYPE(wmfPen* P)   -> (U16) `type' of pen (??)
  46.  */
  47. #define WMF_PEN_TYPE(P)   ((P)->lopnStyle & PS_TYPE_MASK)
  48.  
  49. /**
  50.  * WMF_PEN_WIDTH(wmfPen* P)  -> (double) pen `width'  (thickness w.r.t. x-axis)
  51.  */
  52. #define WMF_PEN_WIDTH(P)  ((P)->width)
  53.  
  54. /**
  55.  * WMF_PEN_HEIGHT(wmfPen* P) -> (double) pen `height' (thickness w.r.t. y-axis)
  56.  */
  57. #define WMF_PEN_HEIGHT(P) ((P)->height)
  58.  
  59. /**
  60.  * WMF_PEN_COLOR(wmfPen* P) -> (wmfRGB*) pen color
  61.  */
  62. #define WMF_PEN_COLOR(P)  (&((P)->lopnColor))
  63.  
  64. /**
  65.  * WMF_PEN_SET_STYLE(wmfPen* P,(U16) pen style)
  66.  */
  67. #define WMF_PEN_SET_STYLE(P,Z)  (P)->lopnStyle = ((P)->lopnStyle & ~PS_STYLE_MASK ) | ((Z) & PS_STYLE_MASK )
  68.  
  69. /**
  70.  * WMF_PEN_SET_ENDCAP(wmfPen* P,(U16) endcap style)
  71.  */
  72. #define WMF_PEN_SET_ENDCAP(P,Z) (P)->lopnStyle = ((P)->lopnStyle & ~PS_ENDCAP_MASK) | ((Z) & PS_ENDCAP_MASK)
  73.  
  74. /**
  75.  * WMF_PEN_SET_JOIN(wmfPen* P,(U16) join style)
  76.  */
  77. #define WMF_PEN_SET_JOIN(P,Z)   (P)->lopnStyle = ((P)->lopnStyle & ~PS_JOIN_MASK  ) | ((Z) & PS_JOIN_MASK  )
  78.  
  79. /**
  80.  * WMF_PEN_SET_TYPE(wmfPen* P,(U16) `type' of pen)
  81.  */
  82. #define WMF_PEN_SET_TYPE(P,Z)   (P)->lopnStyle = ((P)->lopnStyle & ~PS_TYPE_MASK  ) | ((Z) & PS_TYPE_MASK  )
  83.  
  84. /**
  85.  * WMF_PEN_SET_WIDTH(wmfPen* P,(double) pen `width')
  86.  */
  87. #define WMF_PEN_SET_WIDTH(P,Z)  (P)->width  = (Z)
  88.  
  89. /**
  90.  * WMF_PEN_SET_HEIGHT(wmfPen* P,(double) pen `height')
  91.  */
  92. #define WMF_PEN_SET_HEIGHT(P,Z) (P)->height = (Z)
  93.  
  94. /**
  95.  * WMF_PEN_SET_COLOR(wmfPen* P,(wmfRGB*) pen color)
  96.  */
  97. #define WMF_PEN_SET_COLOR(P,Z)  (P)->lopnColor = (*(Z))
  98.  
  99. /**
  100.  * WMF_BRUSH_STYLE(wmfBrush* B) -> (U16) brush style
  101.  */
  102. #define WMF_BRUSH_STYLE(B)  ((B)->lbStyle)
  103.  
  104. /**
  105.  * WMF_BRUSH_HATCH(wmfBrush* B) -> (U16) brush hatch style
  106.  */
  107. #define WMF_BRUSH_HATCH(B)  ((B)->lbHatch)
  108.  
  109. /**
  110.  * WMF_BRUSH_COLOR(wmfBrush* B) -> (wmfRGB*) brush color
  111.  */
  112. #define WMF_BRUSH_COLOR(B)  (&((B)->lbColor))
  113.  
  114. /**
  115.  * WMF_BRUSH_BITMAP(wmfBrush* B) -> (wmfBMP*) brush bitmap
  116.  */
  117. #define WMF_BRUSH_BITMAP(B) (&((B)->bmp))
  118.  
  119. /**
  120.  * WMF_BRUSH_SET_STYLE(wmfBrush* B,(U16) brush style)
  121.  */
  122. #define WMF_BRUSH_SET_STYLE(B,Z)  (B)->lbStyle = (Z)
  123.  
  124. /**
  125.  * WMF_BRUSH_SET_HATCH(wmfBrush* B,(U16) brush hatch style)
  126.  */
  127. #define WMF_BRUSH_SET_HATCH(B,Z)  (B)->lbHatch = (Z)
  128.  
  129. /**
  130.  * WMF_BRUSH_SET_COLOR(wmfBrush* B,(wmfRGB*) brush color)
  131.  */
  132. #define WMF_BRUSH_SET_COLOR(B,Z)  (B)->lbColor = (*(Z))
  133.  
  134. /**
  135.  * WMF_BRUSH_SET_BITMAP(wmfBrush* B,(wmfBMP*) brush bitmap)
  136.  */
  137. #define WMF_BRUSH_SET_BITMAP(B,Z) (B)->bmp = (*(Z))
  138.  
  139. /**
  140.  * WMF_TEXT_ANGLE(wmfFont* F) -> (double) text angle in radians
  141.  */
  142. #define WMF_TEXT_ANGLE(F)     ((((double) (F)->lfEscapement) / 10) * M_PI / 180)
  143.  
  144. /**
  145.  * WMF_TEXT_UNDERLINE(wmfFont* F) -> (U8) ?? whether to underline (?? how thick)
  146.  */
  147. #define WMF_TEXT_UNDERLINE(F)   ((F)->lfUnderline)
  148.  
  149. /**
  150.  * WMF_TEXT_STRIKEOUT(wmfFont* F) -> (U8) ?? whether to strikeout (?? how thick)
  151.  */
  152. #define WMF_TEXT_STRIKEOUT(F)   ((F)->lfStrikeOut)
  153.  
  154. /**
  155.  * WMF_FONT_WIDTH(wmfFont* F)   -> (U16) font `width'
  156.  */
  157. #define WMF_FONT_WIDTH(F)       ((F)->lfWidth)
  158.  
  159. /**
  160.  * WMF_FONT_HEIGHT(wmfFont* F)  -> (U16) font height
  161.  */
  162. #define WMF_FONT_HEIGHT(F)      ((F)->lfHeight)
  163.  
  164. /**
  165.  * WMF_FONT_ESCAPEMENT(wmfFont* F)  -> (S16) escapement [use WMF_TEXT_ANGLE instead]
  166.  */
  167. #define WMF_FONT_ESCAPEMENT(F)  ((F)->lfEscapement)
  168.  
  169. /**
  170.  * WMF_FONT_ORIENTATION(wmfFont* F) -> (S16) orientation [??]
  171.  */
  172. #define WMF_FONT_ORIENTATION(F) ((F)->lfOrientation)
  173.  
  174. /**
  175.  * WMF_FONT_WEIGHT(wmfFont* F) -> (U16) weight
  176.  */
  177. #define WMF_FONT_WEIGHT(F)      ((F)->lfWeight)
  178.  
  179. /**
  180.  * WMF_FONT_ITALIC(wmfFont* F) -> (U8) italic
  181.  */
  182. #define WMF_FONT_ITALIC(F)      ((F)->lfItalic)
  183.  
  184. /**
  185.  * WMF_FONT_OUT(wmfFont* F)     -> (U8) output precision [??]
  186.  */
  187. #define WMF_FONT_OUT(F)         ((F)->lfOutPrecision)
  188.  
  189. /**
  190.  * WMF_FONT_CLIP(wmfFont* F)    -> (U8) clip precision [??]
  191.  */
  192. #define WMF_FONT_CLIP(F)        ((F)->lfClipPrecision)
  193.  
  194. /**
  195.  * WMF_FONT_QUALITY(wmfFont* F) -> (U8) quality [??]
  196.  */
  197. #define WMF_FONT_QUALITY(F)     ((F)->lfQuality)
  198.  
  199. /**
  200.  * WMF_FONT_PITCH(wmfFont* F)   -> (U8) pitch & family [??]
  201.  */
  202. #define WMF_FONT_PITCH(F)       ((F)->lfPitchAndFamily)
  203.  
  204. /**
  205.  * WMF_FONT_CHARSET(wmfFont* F) -> (U8) character set
  206.  */
  207. #define WMF_FONT_CHARSET(F)     ((F)->lfCharSet)
  208.  
  209. /**
  210.  * WMF_FONT_NAME(wmfFont* F)   -> (char*) font name supplied by metafile
  211.  */
  212. #define WMF_FONT_NAME(F)        ((F)->lfFaceName)
  213.  
  214. /**
  215.  * WMF_TEXT_SET_UNDERLINE(wmfFont* F,(U8) ?? whether to underline (?? how thick))
  216.  */
  217. #define WMF_TEXT_SET_UNDERLINE(F,Z)   (F)->lfUnderline = (Z)
  218.  
  219. /**
  220.  * WMF_TEXT_SET_STRIKEOUT(wmfFont* F,(U8) ?? whether to strikeout (?? how thick))
  221.  */
  222. #define WMF_TEXT_SET_STRIKEOUT(F,Z)   (F)->lfStrikeOut = (Z)
  223.  
  224. /**
  225.  * WMF_FONT_SET_WIDTH(wmfFont* F,(U16) font `width')
  226.  */
  227. #define WMF_FONT_SET_WIDTH(F,Z)       (F)->lfWidth = (Z)
  228.  
  229. /**
  230.  * WMF_FONT_SET_HEIGHT(wmfFont* F,(U16) font height)
  231.  */
  232. #define WMF_FONT_SET_HEIGHT(F,Z)      (F)->lfHeight = (Z)
  233.  
  234. /**
  235.  * WMF_FONT_SET_ESCAPEMENT(wmfFont* F,(S16) escapement)
  236.  */
  237. #define WMF_FONT_SET_ESCAPEMENT(F,Z)  (F)->lfEscapement = (Z)
  238.  
  239. /**
  240.  * WMF_FONT_SET_ORIENTATION(wmfFont* F,(S16) orientation [??])
  241.  */
  242. #define WMF_FONT_SET_ORIENTATION(F,Z) (F)->lfOrientation = (Z)
  243.  
  244. /**
  245.  * WMF_FONT_SET_WEIGHT(wmfFont* F,(U16) weight)
  246.  */
  247. #define WMF_FONT_SET_WEIGHT(F,Z)      (F)->lfWeight = (Z)
  248.  
  249. /**
  250.  * WMF_FONT_SET_ITALIC(wmfFont* F,(U8) italic)
  251.  */
  252. #define WMF_FONT_SET_ITALIC(F,Z)      (F)->lfItalic = (Z)
  253.  
  254. /**
  255.  * WMF_FONT_SET_OUT(wmfFont* F,(U8) output precision [??])
  256.  */
  257. #define WMF_FONT_SET_OUT(F,Z)         (F)->lfOutPrecision = (Z)
  258.  
  259. /**
  260.  * WMF_FONT_SET_CLIP(wmfFont* F,(U8) clip precision [??])
  261.  */
  262. #define WMF_FONT_SET_CLIP(F,Z)        (F)->lfClipPrecision = (Z)
  263.  
  264. /**
  265.  * WMF_FONT_SET_QUALITY(wmfFont* F,(U8) quality [??])
  266.  */
  267. #define WMF_FONT_SET_QUALITY(F,Z)     (F)->lfQuality = (Z)
  268.  
  269. /**
  270.  * WMF_FONT_SET_PITCH(wmfFont* F,(U8) pitch & family [??])
  271.  */
  272. #define WMF_FONT_SET_PITCH(F,Z)       (F)->lfPitchAndFamily = (Z)
  273.  
  274. /**
  275.  * WMF_FONT_SET_CHARSET(wmfFont* F,(U8) chracter set)
  276.  */
  277. #define WMF_FONT_SET_CHARSET(F,Z)     (F)->lfCharSet = (Z)
  278.  
  279. /**
  280.  * WMF_FONT_SET_NAME(wmfFont* F,(char*) font name supplied by metafile [do not free this string!])
  281.  */
  282. #define WMF_FONT_SET_NAME(F,Z)        (F)->lfFaceName = (Z)
  283.  
  284. /**
  285.  * WMF_DC_BRUSH(wmfDC* C) -> (wmfBrush*) current brush
  286.  */
  287. #define WMF_DC_BRUSH(C)        ((C)->brush)
  288.  
  289. /**
  290.  * WMF_DC_PEN(wmfDC* C)   -> (wmfPen*)   current pen
  291.  */
  292. #define WMF_DC_PEN(C)          ((C)->pen)
  293.  
  294. /**
  295.  * WMF_DC_FONT(wmfDC* C)  -> (wmfFont*)  current font
  296.  */
  297. #define WMF_DC_FONT(C)         ((C)->font)
  298.  
  299. /**
  300.  * WMF_DC_TEXTCOLOR(wmfDC* C)  -> (wmfRGB*) text color
  301.  */
  302. #define WMF_DC_TEXTCOLOR(C)  (&((C)->textcolor))
  303.  
  304. /**
  305.  * WMF_DC_BACKGROUND(wmfDC* C) -> (wmfRGB*) background color
  306.  */
  307. #define WMF_DC_BACKGROUND(C) (&((C)->bgcolor))
  308.  
  309. /**
  310.  * WMF_DC_OPAQUE(wmfDC* C)      -> (U16) whether to fill opaque (non-zero if true)
  311.  */
  312. #define WMF_DC_OPAQUE(C)       ((C)->bgmode == OPAQUE)
  313.  
  314. /**
  315.  * WMF_DC_TRANSPARENT(wmfDC* C) -> (U16) whether to fill transparent
  316.  */
  317. #define WMF_DC_TRANSPARENT(C)  ((C)->bgmode == TRANSPARENT)
  318.  
  319. /**
  320.  * WMF_DC_POLYFILL(wmfDC* C) -> (U16) how to fill polygons
  321.  */
  322. #define WMF_DC_POLYFILL(C)     ((C)->polyfillmode)
  323.  
  324. /**
  325.  * WMF_DC_ROP(wmfDC* C) -> (U16) ROP mode
  326.  */
  327. #define WMF_DC_ROP(C)          ((C)->ROPmode)
  328.  
  329. /**
  330.  * WMF_DC_TEXTALIGN(wmfDC* C) -> (U16) how to align text
  331.  */
  332. #define WMF_DC_TEXTALIGN(C)    ((C)->textalign)
  333.  
  334. /**
  335.  * WMF_DC_CHAREXTRA(wmfDC* C)  -> (U16) char [extended character set??]
  336.  */
  337. #define WMF_DC_CHAREXTRA(C)    ((C)->charextra)
  338.  
  339. /**
  340.  * WMF_DC_BREAKEXTRA(wmfDC* C) -> (U16) break [line break??]
  341.  */
  342. #define WMF_DC_BREAKEXTRA(C)   ((C)->breakextra)
  343.  
  344. /* Definition subject to change:
  345.  */
  346.  
  347. /**
  348.  * WMF_DC_SET_PEN(wmfDC* C,(wmfPen*) current pen)
  349.  */
  350. #define WMF_DC_SET_PEN(C,Z)    (C)->pen = (Z)
  351.  
  352. /**
  353.  * WMF_DC_SET_BRUSH(wmfDC* C,(wmfBrush*) current brush)
  354.  */
  355. #define WMF_DC_SET_BRUSH(C,Z)  (C)->brush = (Z)
  356.  
  357. /**
  358.  * WMF_DC_SET_FONT(wmfDC* C,(wmfFont*) current font)
  359.  */
  360. #define WMF_DC_SET_FONT(C,Z)   (C)->font = (Z)
  361.  
  362. /**
  363.  * WMF_DC_SET_TEXTCOLOR(wmfDC* C,(wmfRGB*) text color)
  364.  */
  365. #define WMF_DC_SET_TEXTCOLOR(C,Z)  (C)->textcolor = (*(Z))
  366.  
  367. /**
  368.  * WMF_DC_SET_BACKGROUND(wmfDC* C,(wmfRGB*) background color)
  369.  */
  370. #define WMF_DC_SET_BACKGROUND(C,Z) (C)->bgcolor = (*(Z))
  371.  
  372. /**
  373.  * WMF_DC_SET_OPAQUE(wmfDC* C)
  374.  */
  375. #define WMF_DC_SET_OPAQUE(C)       (C)->bgmode = OPAQUE
  376.  
  377. /**
  378.  * WMF_DC_SET_TRANSPARENT(wmfDC* C)
  379.  */
  380. #define WMF_DC_SET_TRANSPARENT(C)  (C)->bgmode = TRANSPARENT
  381.  
  382. /**
  383.  * WMF_DC_SET_POLYFILL(wmfDC* C,(U16) how to fill polygons)
  384.  */
  385. #define WMF_DC_SET_POLYFILL(C,Z)   (C)->polyfillmode = (Z)
  386.  
  387. /**
  388.  * WMF_DC_SET_ROP(wmfDC* C,(U16) ROP mode)
  389.  */
  390. #define WMF_DC_SET_ROP(C,Z)        (C)->ROPmode = (Z)
  391.  
  392. /**
  393.  * WMF_DC_SET_TEXTALIGN(wmfDC* C,(U16) how to align text)
  394.  */
  395. #define WMF_DC_SET_TEXTALIGN(C,Z)  (C)->textalign = (Z)
  396.  
  397. /**
  398.  * WMF_DC_SET_CHAREXTRA(wmfDC* C,(U16) char [extended character set??])
  399.  */
  400. #define WMF_DC_SET_CHAREXTRA(C,Z)  (C)->charextra = (Z)
  401.  
  402. /**
  403.  * WMF_DC_SET_BREAKEXTRA(wmfDC* C,(U16) break [line break??])
  404.  */
  405. #define WMF_DC_SET_BREAKEXTRA(C,Z) (C)->breakextra = (Z)
  406.  
  407. #endif /* ! LIBWMF_MACRO_H */
  408.